package me.zhengjie.modules.fund.reptile;

import me.zhengjie.modules.fund.domain.Fund;
import me.zhengjie.modules.fund.domain.FundNetValue;
import org.springframework.data.domain.Pageable;

import java.text.ParseException;
import java.util.Date;
import java.util.List;

/**
 * 基金爬虫
 */
public interface FundCrawler {

    /**
     * 爬取所有的基金信息
     *
     * @return
     */
    List<Fund> getAllFunds();

    /**
     * 爬取指定基金最近的净值信息
     *
     * @param code 基金编码
     * @return
     */
    List<FundNetValue> getLatestNetValues(String code) throws ParseException;

    /**
     * 爬取指定基金最近一天的净值信息
     *
     * @param code 基金编码
     * @return 指定的基金编码的最后一天更新的净值
     * @throws ParseException
     */
    FundNetValue getLatestNetValue(String code) throws ParseException;

    /**
     * 分页查询指定编码基金的净值
     *
     * @param code
     * @param pageable
     * @return
     */
    List<FundNetValue> findFundNetValueByPage(String code, Pageable pageable, Date startDate) throws ParseException;
}
